package cn.hncu.booksManagementSystem.common.enums;

public enum UserTypeEnum {
	ADMIN(1,"超级管理员"),
	BOOK(2,"图书管理员"),
	IN(3,"进货管理员"),
	OUT(4,"销售管理员"),
	STOCK(5,"库存管理员");
	
	final private int type; //类型
	final private String name; //名称
	
	private UserTypeEnum(int type,String name) {
		this.type = type;
		this.name = name;
	}
	
	public int getType() {
		return type;
	}
	public String getName() {
		return name;
	}
	/**
	 * 通过 type 获取所对应的 name ,如果没有所对应的name则抛出异常
	 * @param type 枚举中的类型 
	 * @return 该 type 所对应的 name 
	 * @throws IllegalArgumentException 抛出异常,表示没有对应的 name
	 */
	public static String getNameByType(int type) throws IllegalArgumentException {
		//通过 foreach 遍历
		for (UserTypeEnum ute : UserTypeEnum.values()) {
			if (ute.type==type) {
				return ute.name;
			}
		}
		throw new IllegalArgumentException("No name corresponding to this "+type);
	}
	/**
	 * 
	 * 通过 name 获取所对应的 type ,如果没有所对应的type则抛出异常
	 * @param name 枚举中的 name 
	 * @return 该 name 所对应的 type 
	 * @throws IllegalArgumentException 抛出异常,表示没有对应的 type
	 */
	public static int getTypeByName(String name)throws IllegalArgumentException {
		//通过 foreach 遍历
		for (UserTypeEnum ute : UserTypeEnum.values()) {
			if (ute.name.equals(name)) {
				return ute.type;
			}
		}
		throw new IllegalArgumentException("No Type corresponding to this "+name);
	}
	/**
	 * 获取所有类型的中文表示方式
	 * @return 存放所有类型的中文表示方式的字符串数组
	 */
	public static String[] getAllName() {
		String names[] = new String[UserTypeEnum.values().length];
		int i = 0;
		for (UserTypeEnum ute : UserTypeEnum.values()) {
			names[i++] = ute.getName();
		}
		return names;
	}
	
}
